package com.insigma.business.qrcode.soldier._provider;



import com.insigma.business.qrcode.common.annotation.ApiServiceType;
import com.insigma.business.qrcode.common.vo.BaseResponse;
import com.insigma.business.qrcode.soldier.dto.BuriedPointItem;
import com.insigma.business.qrcode.soldier.request.BuriedPointRequest;
import com.insigma.business.qrcode.soldier.request.BuriedPointResponse;
import com.insigma.business.qrcode.soldier.request.BuriedPointStatsRequest;

import java.util.Date;
import java.util.List;


public interface BuriedPointProvider {

    
    String setBuriedPointByWeek(BuriedPointRequest request);

    Integer getWeekCount(BuriedPointStatsRequest request);

    
    @ApiServiceType(value = "all.ss.buried.point.week.section.add", name = "按照周，根据name 来set", desc = "按照周，根据name 来set")
    BaseResponse<String> asyncSetSectionByWeek(BuriedPointRequest request);

    
    String setBuriedPointOfSetByDay(BuriedPointRequest request);

    
    String asyncSetBuriedPointOfHashByDayOfAdminCode(BuriedPointRequest request);


    
    String setCountPoint(BuriedPointRequest request);

    
    List<BuriedPointItem> getLastWeekSortedBuriedPointList(BuriedPointRequest request);

    
    List<BuriedPointItem> getAllBuriedPointList(BuriedPointRequest request);

    
    Integer queryDailyVisitCount(Date date, String type);

    
    @ApiServiceType(value = "gov.buried.point.stats", name = "统计埋点", desc = "统计埋点")
    BaseResponse<BuriedPointResponse> statsBuriedPoint(BuriedPointStatsRequest request);

    
    @ApiServiceType(value = "gov.buried.point.traffic.stats", name = "统计访问", desc = "统计访问")
    BaseResponse<BuriedPointResponse> statsTraffic(BuriedPointStatsRequest request);

    
    @ApiServiceType(value = "gov.buried.point.section.stats", name = "按周统计", desc = "按周统计")
    BaseResponse<List<BuriedPointItem>> statsSectionBuriedPoint(BuriedPointStatsRequest request);

    
    @ApiServiceType(value = "gov.buried.point.daily.stats", name = "统计日活", desc = "统计日活")
    BaseResponse<BuriedPointResponse> statsDailyUsage(BuriedPointStatsRequest request);

    
    BuriedPointResponse statsHashDailyAdminUsage(BuriedPointStatsRequest request);

    
    BuriedPointResponse statsSingleDailyAdminUsage(BuriedPointStatsRequest request);


}
